package org.zn.mvcbase.repository;

import org.zn.mvcbase.entity.BaseEntity;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

/**
 * 
 * @ProjectName:91isoft_Framework
 * @ClassName:BaseCommonSingleTableRepository.java
 * @Description: 继承自BaseCommonRepository接口及Mapper接口，目的为实现实体单表操作扩展接口。
 * 							 只支持单实体（单表）的CURD操作，不支持多表关联操作。相当于Mybatis Generator另一种实现方案。
 * 							 基础CURD不再出现在*Mapper.xml中，文件更简洁。方法明细及调用示例见下。
 * @Copyright: Copyright (c) 2016

 * @author: Lan Yuan
 * @email: lanyuan@91isoft.com 
 * @date 2016年1月14日 下午2:09:39
 * @version V1.0
 */
public interface BaseCommonSingleTableRepository<T extends BaseEntity> extends BaseCommonRepository<T>,Mapper<T>,MySqlMapper<T>{
	
		/**
		 * 以下为调用示例
		/**
		 * 
		基础接口
		Select
	
		方法：List<T> select(T record);
		说明：根据实体中的属性值进行查询，查询条件使用等号
	
	
		方法：T selectByPrimaryKey(Object key);
		说明：根据主键字段进行查询，方法参数必须包含完整的主键属性，查询条件使用等号
	
	
		方法：List<T> selectAll();
		说明：查询全部结果，select(null)方法能达到同样的效果
	
	
		方法：T selectOne(T record);
		说明：根据实体中的属性进行查询，只能有一个返回值，有多个结果是抛出异常，查询条件使用等号
	
	
		方法：int selectCount(T record);
		说明：根据实体中的属性查询总数，查询条件使用等号
	
	
		Insert
	
		方法：int insert(T record);
		说明：保存一个实体，null的属性也会保存，不会使用数据库默认值
	
	
		方法：int insertSelective(T record);
		说明：保存一个实体，null的属性不会保存，会使用数据库默认值
	
	
		Update
	
		方法：int updateByPrimaryKey(T record);
		说明：根据主键更新实体全部字段，null值会被更新
	
	
		方法：int updateByPrimaryKeySelective(T record);
		说明：根据主键更新属性不为null的值
	
	
		Delete
	
		方法：int delete(T record);
		说明：根据实体属性作为条件进行删除，查询条件使用等号
	
	
		方法：int deleteByPrimaryKey(Object key);
		说明：根据主键字段进行删除，方法参数必须包含完整的主键属性
	 */


	
}
